#ifndef __LINKLIST_H__
#define __LINKLIST_H__
#include<stddef.h>



using ElementType=int;
class Linklist
{
public:
    Linklist();
    Linklist(const Linklist&list);

    ~Linklist();
    //尾插
    void InsertTail(const ElementType &element);
    //头查
    void InsertHead(const ElementType &element);
    //中间
    void InsertByIdenx(int index, const ElementType &element);
    //按位置删除
    void  RemoveByIdenx(int index);
    //按值删
    void RemoveByElement(const ElementType &element);
    //查找
    void UpdateByindex(int index,const ElementType&element);
    void UpdateByElement(const ElementType &oldv,const ElementType &newv);
    //链表的排序
    void BubbleSort();
    //归并
    Linklist Merge(const Linklist&list);
    void Sort();
    //!!链表逆序
    void Reserve();
    //逆序（递归）
    void Reserve2();



    void show();


private:

    //节点
    struct Node
    {   Node(const ElementType &value):value(value),next(nullptr){}

        ElementType value;//数据域
        Node*   next;//指针域

    };
    void FastSort(Node*start,Node*end);
    Node* Reserve2(Node*node);
    Node*head;//头指针
    size_t size;//节点个数
};





















#endif
